package paidaxing.blog.post.service;

import paidaxing.blog.common.result.PageResult;
import paidaxing.blog.post.dto.PostDTO;
import paidaxing.blog.post.dto.PostStatsDTO;
import paidaxing.blog.post.dto.request.PostQueryRequest;
import paidaxing.blog.post.dto.request.PostRequestDTO;

/**
 * 文章服务接口
 */
public interface PostsService {

    /**
     * 创建文章
     * 
     * @param postRequestDTO 文章请求DTO
     * @return 文章DTO
     */
    PostDTO createPost(PostRequestDTO postRequestDTO);

    /**
     * 更新文章
     * 
     * @param id 文章ID
     * @param postRequestDTO 文章请求DTO
     * @return 文章DTO
     */
    PostDTO updatePost(Long id, PostRequestDTO postRequestDTO);

    /**
     * 获取文章详情
     * 
     * @param id 文章ID
     * @return 文章DTO
     */
    PostDTO getPostDetail(Long id);

    /**
     * 删除文章
     * 
     * @param id 文章ID
     * @return 是否成功
     */
    boolean deletePost(Long id);

    /**
     * 查询文章列表
     * 
     * @param queryRequest 查询条件
     * @return 文章分页结果
     */
    PageResult<PostDTO> listPosts(PostQueryRequest queryRequest);

    /**
     * 获取文章统计数据
     * 
     * @param id 文章ID
     * @return 文章统计数据DTO
     */
    PostStatsDTO getPostStats(Long id);

    /**
     * 增加文章浏览量
     * 
     * @param id 文章ID
     * @return 是否成功
     */
    boolean increaseViewCount(Long id);
}